/**
 * Copyright (c), 上海沃恩信息科技有限公司.
 * All rights reserved.
 * Licensed under BSD (https://www.pittypat.work/bsd.html).
 */

package pittypat;

/**
 * 对用户进行权限检查的结果。
 */
public final class Permission {
	private IUser user;
	private boolean authorized;

	/**
	 * 未授权的匿名用户，这是未使用 AllowAnonymous 标记的模块的默认权限。
	 */
	public static final Permission ANONYMOUS_UNAUTHORIZED = new Permission(User.ANONYMOUS, false);

	/**
	 * 未授权的匿名用户，这是使用 AllowAnonymous 标记的模块的默认权限。
	 */
	public static final Permission ANONYMOUS_AUTHORIZED = new Permission(User.ANONYMOUS, true);

	/**
	 * 使用指定的用户信息和授权信息初始化 Permission 类的新实例。
	 * 
	 * @param user
	 *            当前用户对象。
	 * @param authorized
	 *            指示用户是否已被授权使用目标功能。
	 * @throws IllegalArgumentException
	 *             user 为 null。
	 */
	public Permission(IUser user, boolean authorized) {
		if (user == null) {
			throw new IllegalArgumentException("user 为 null。");
		}

		this.user = user;
		this.authorized = authorized;
	}

	/**
	 * 获取当前用户的用户信息。
	 * 
	 * @return 用户信息。
	 */
	public IUser getUser() {
		return this.user;
	}

	/**
	 * 获取一个值，该值指示用户是否已被授权使用目标功能。
	 * 
	 * @return 指示用户是否已被授权使用目标功能。
	 */
	public boolean isAuthorized() {
		return this.authorized;
	}
}
